package com.sanbi.common.express.vo;

import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;

/**
 * 出库单vo
 * @description:
 * @author: wanpeng
 * @create: 2024-05-28 19:57
 * @Version 1.0
 **/
@Data
public class OutBoundVo implements Serializable {

    /**
     * 美国站内部物流单号
     */
    @NotNull
    private String expressOrderSn;

    /**
     * 仓库编码
     */
    private String warehouseCode;

    /**
     * 物流产品编码（物流公司编码）
     */
    @NotNull
    private String LogisticsProductCode;

    /**
     * 委托类型 <br>可选值：
     * <br>S(标准出库);
     * <br>D(下架销毁);
     * <br>R(退仓出库);
     * <br>DS(dropshipping出库);
     * <br>P(FBA Pro); O(其他出库)。
     * <br>*注：如果选择是标准出库，SKU的库存质量只能选择良好。
     * <br>参见 CaiNiaoConsignmentTypeEnum
     */
    @NotNull
    private String consignmentType;

    /**
     * 收件人信息
     */
    @NotNull
    private RecipientsVo recipientsVo;

    /**
     * sku出库信息集合
     */
    @NotNull
    private List<OconsignmentSkuVo> skuVoList;

    /**
     * 出库sku vo
     */
    @Data
    public static class OconsignmentSkuVo implements Serializable{
        /** 	收件人证件类型 */
        @Length(max = 40)
        @NotNull
        private String sku_code;
        /**出库SKU数量 */
        @NotNull
        private Integer qty;
        /** SKU库存质量。可选值：G（良好）; B（破损）; R（退件）; C（违禁品）; W（淋湿）; M（霉变）; E（异常）。<br>*注：如果选择是标准出库，SKU的库存质量只能选择良好。*/
        @NotNull
        private String stock_quality;
    }
}
